<template>
  <div id="app">
    <to-do-list />
    {{mark}}
  </div>
</template>

<script>
//import HelloWorld from './components/HelloWorld.vue'
import ToDoList from "@/components/ToDoList";

export default {
  name: 'App',
  components: {
    ToDoList
  },
  data(){
    return{
      mark: "hello,world!",
    }
  },
  methods: {
    test(){

    }
  },
  beforeCreate: function () {
    // 在实例初始化之后，数据观测 (data observer) 和 event/watcher 事件配置之前被调用
    console.log("beforeCreate", this.mark, this.test, this.$el, this.name);
  },
  created: function () {
    // 在实例创建完成后被立即调用
    // 在这一步，实例已完成以下的配置：数据观测 (data observer)，属性和方法的运算，watch/event 事件回调
    // 挂载阶段还没开始，$el 属性目前不可见
    console.log("created", this.mark, this.test, this.$el, this.name);
  },
  beforeMount: function() {
    // 在挂载开始之前被调用：相关的 render 函数首次被调用
    console.log("beforeMount", this.mark, this.test, this.$el, this.name);
  },
  mounted: function() {
    // el 被新创建的 vm.$el 替换，并挂载到实例上去之后调用该钩子
    // 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$el 也在文档内
    // mounted 不会承诺所有的子组件也都一起被挂载
    // 如果希望等到整个视图都渲染完毕，可以用 vm.$nextTick 替换掉 mounted
    console.log("mounted", this.mark, this.test, this.$el, this.name);
    this.$nextTick(function() {
      // 此处整个视图已渲染完毕
    });
  },
  beforeUpdate: function() {
    // 数据更新时调用，发生在虚拟 DOM 打补丁之前
    // 这里适合在更新之前访问现有的 DOM，比如手动移除已添加的事件监听器
  },
  updated: function() {
    // 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子
    // 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作
  },
  beforeDestroy: function() {
    // 实例销毁之前调用。在这一步，实例仍然完全可用
  },
  destroyed: function() {
    // Vue 实例销毁后调用
    // 调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁
  }


}

</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
